package com.keray.web.push.store;

import javax.websocket.Session;
import java.util.LinkedList;

/**
 * @author by keray
 * date:2021/7/23 9:47 上午
 */
public interface SocketDataStore {

    LinkedList<Session> serviceSession(String service);

    LinkedList<Session> serviceAndGroupSession(String service, String group);

    LinkedList<Session> serviceAndUidSession(String service, String uid);

    /**
     * <p>
     * <h3>作者 keray</h3>
     * <h3>时间： 2021/7/23 10:43 上午</h3>
     * </p>
     *
     * @param session
     * @return <p> {@link int} </p>
     * -1 store已满 无法添加
     * -2 未知错误导致insert失败
     * >=0 表示现在insert的session的下标
     * @throws
     */
    int insertSession(Session session, String service, String uid);

    /**
     * <p>
     * <h3>作者 keray</h3>
     * <h3>时间： 2021/7/26 9:22 上午</h3>
     * 移除用户链接时还需要移除用户的所有group
     * </p>
     *
     * @return <p> {@link} </p>
     * @throws
     */
    boolean removeSession(Session session, String service, String uid);

    boolean removeSession(String service, String uid);

    void groupSessionLink(String service, String group, String uid);
}
